import java.util.Arrays;
import java.util.ArrayList;

class WarTest {
    
    public static void main(String[] args) {        
        Territorio madureira = new Territorio("Madureira");
        Territorio bentoRibeiro = new Territorio("Bento Ribeiro");
        Territorio meier = new Territorio("Méier");
        Territorio jacarepagua = new Territorio("Jacarepaguá");
        Territorio iraja = new Territorio("Irajá");
        Territorio tijuca = new Territorio("Tijuca");
        Territorio rochaMiranda = new Territorio("Rocha Miranda");        
        Territorio vilaValqueire = new Territorio("Vila Valqueire");
        
        
        Mapa mapa = new Mapa().
            adicionar(madureira, new ArrayList<Territorio>(Arrays.asList(meier, iraja, jacarepagua, bentoRibeiro, rochaMiranda, vilaValqueire))).
            adicionar(bentoRibeiro, new ArrayList<Territorio>(Arrays.asList(madureira, vilaValqueire))).
            adicionar(meier, new ArrayList<Territorio>(Arrays.asList(madureira, jacarepagua))).
            adicionar(jacarepagua, new ArrayList<Territorio>(Arrays.asList(meier, madureira, tijuca, rochaMiranda))).
            adicionar(iraja, new ArrayList<Territorio>(Arrays.asList(madureira))).
            adicionar(tijuca, new ArrayList<Territorio>(Arrays.asList(jacarepagua))).
            adicionar(rochaMiranda, new ArrayList<Territorio>(Arrays.asList(madureira, jacarepagua))).
            adicionar(vilaValqueire, new ArrayList<Territorio>(Arrays.asList(madureira, bentoRibeiro)));
        System.out.println(mapa);
        
        Jogador player = new Jogador("Leandro").
            conquistar(madureira, 3).
            conquistar(mapa.buscarPeloNome("Bento Ribeiro"), 1).
            conquistar(rochaMiranda, 2).
            conquistar(vilaValqueire, 5);
        System.out.println(player);
        
        Jogador pc = new Jogador("PC").
            conquistar(meier, 2).
            conquistar(iraja, 4).
            conquistar(tijuca, 1).
            conquistar(jacarepagua, 1);
        System.out.println(pc);
        
        System.out.println("Madureira tem fronteira com Méier? " + mapa.temFronteira(madureira, meier));
        System.out.println("Madureira tem fronteira com Tijuca? " + mapa.temFronteira(madureira, tijuca));
        
        System.out.println(player.getNome() + " pode atacar Tijuca? " + MaquinaDeRegras.isAtaquePermitido(mapa, player, mapa.buscarPeloNome("Tijuca")));
        System.out.println(player.getNome() + " pode atacar Irajá? " + MaquinaDeRegras.isAtaquePermitido(mapa, player, iraja));
        
        System.out.println("Lista dos territórios que o " + pc.getNome() + " pode atacar:");
        ArrayList<Territorio> listaTerritorios = new ArrayList<Territorio>(); 
        for (Territorio t: mapa.getTerritorios().keySet()) {
            if (MaquinaDeRegras.isAtaquePermitido(mapa, pc, t))
                listaTerritorios.add(t);
        }
        System.out.println(listaTerritorios);
        
    }

}